package UseIO.Practice;

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.stream.Stream;

public class ChangeFileContent {
    public static void main(String[] args) throws IOException{
        // 文件排序操作
        //method01();
        // 文件流的操作
        //method02();
    }
    // 普通的操作
    public static void method01() throws IOException {
        // 读文件
        FileReader fr = new FileReader("8.内置模块/UseIO/Practice/ChangeFileContent.txt");
        StringBuilder sb = new StringBuilder();
        int b;
        while ((b=fr.read())!=-1){
            sb.append((char) b);
        }
        String string = sb.toString();
        String[] split = string.split("-");
        ArrayList<Integer> arrayList= new ArrayList<>();
        for (String s : split) {
            arrayList.add(Integer.parseInt(s));
        }
        // 排序
        Collections.sort(arrayList);
        // 写出
        FileWriter fw = new FileWriter("8.内置模块/UseIO/Practice/ChangeFileContentSort01.txt");
        for (int i = 0; i < arrayList.size(); i++) {
            if(i==arrayList.size()-1){
                fw.write(arrayList.get(i)+"");
            }else {
                fw.write(arrayList.get(i)+"-");
            }
        }
        fr.close();
        fw.close();
    }
    // 使用stream流操作
    public static void method02() throws IOException{
        FileReader fr = new FileReader("8.内置模块/UseIO/Practice/ChangeFileContent.txt");
        int b;
        // 这里使用到了stringBuilder存文件数据操作
        StringBuilder sb = new StringBuilder();
        while ((b=fr.read())!=-1){
            sb.append((char) b);
        }
        // Stream来操作字符串得到数组
        Integer[] array = Arrays.stream(sb.toString().split("-")).map(Integer::parseInt).sorted().toArray(Integer[]::new);
        // 数组转字符串操作
        String s = Arrays.toString(array).replace(", ", "-");
        String sstring = s.substring(1, s.length() - 1);
        FileWriter fw = new FileWriter("8.内置模块/UseIO/Practice/ChangeFileContentSort02.txt");
        fw.write(sstring);

        fr.close();
        fw.close();
    }
}
